<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>План лекций</title>
  <link href=styles/styles.css rel="stylesheet" type="text/css">
</head>
<h2>День 4. Тактика выступления на контестах</h2>
<ol>
  <li>Тактика выступления на контестах</li>
  <ol>
    <li>Читаем все условия. Каждую задачу успеваем обсудить 5 минут в первой половине контеста.</li>
    <li>Не тратим на задачу много времени. Если задача тормозит весь процесс, ее можно выкинуть.</li>
    <li>Компьютерное время -- не самоцель. Если решение не доделано, не пишем его.</li>
    <li>Используем монитор: есть сложные задачи, есть простые, есть задачи с потенциальными багами и без, есть баяны.</li>
    <li>Используем тестирующий сервер: можно специально заслать тупое решение и получить TL/WA.</li>
    <li>Цель стресс-теста и прочих фишек: уменьшить дисперсию результатов, сделать так, чтобы в худшем случае все было не так плохо.</li>
    <li>Эффект последних 100 минут контеста: остались сложные задачи, мозг устал. Полезно писать вдвоем. Полезно насильно отрываться от насущного и оценивать ситуацию в целом.</li>
    <li>Правильно ставим цель на тренировочном контесте и основной части соревнования: бороться нужно с задачами, а не с командами</li>
    <li>Правильно ставим цель на финальной части соревнования: покрыть "задачу минимум" с большой вероятностью лучше, чем "задачу максимум" с малой вероятностью</li>
    <li>Психология в команде. Помогайте друг другу, предлагайте помощь.</li>
    <li>Точка выбора. На выбор стоит потратить время. Лишние 3-5 минут. Не спешить.</li>
    <li>Сам себе капитан. Если каждый человек в команде понимает, что происходит, что будет, и согласен с выбором, это хорошо.</li>
  </ol></li>
  <li>Тестирование</li>
  <ol>
    <li>Примеры с assert-ами</li>
    <ol>
      <li>Открытие файлов</li>
      <li>Ответ найден</li>
      <li>Пусть мы пишем декартово дерево... частая бага: где-то забыли что-то пересчитать. После каждой операции вызываем функцию assertTree, которая обходит дерево и проверяет, что оно корректно и все значения в вершинах актуальны</li>
      <li>Пусть мы пишем lca за O(1) через rmq со Sparse Table... частая бага: rmq не работает. После предподсчета таблицы rmq делаем for по все отрезкам [l..r] и assert-им, что SparseTable.min == Stupid.min</li>
      <li>Пусть у нас где-то что-то должно получиться отсортированным автоматически... Обязательно ставим assert, что массив уже отсортирован</li>
    </ol></li>
    <li>Тупое решение, генератор рандомных тестов, стресс-тест</li>
    <ol>
      <li>Можно послать тупое решение и получить TL</li>
      <li>Можно стрессить</li>
      <li>Как стрессить: маленькие тесты часто лучше больших, multitest = тестирование быстрее.</li>
      <li>Max test</li>
    </ol></li>
  </ol></li>
</ol>
